package eu.floranet.repositorio.sql;

import java.io.Serializable;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name="obj_arquivo")
public class EntidadeArquivo implements Serializable {
	@Id
	private int idobjarquivo;

	@Column(name="objarquivo_sala")
	private int arquivoSala;

	@Column(name="objarquivo_descritivo")
	@Lob
	private String arquivoDescritivo;

	@Column(name="objarquivo_data_arquivo")
	private Date arquivoDataArquivo;

	@Column(name="objarquivo_notas")
	@Lob
	private String arquivoNotas;

	@OneToMany(mappedBy="processoArquivo")
	private List<EntidadeProcesso> listaProcesso = new ArrayList<EntidadeProcesso>();

	private static final long serialVersionUID = 1L;

	public EntidadeArquivo() {
		super();
	}

	public EntidadeArquivo(int arquivoSala, Date arquivoDataArquivo) {
		this();
		setArquivoSala(arquivoSala);
		setArquivoDataArquivo(arquivoDataArquivo);
		setArquivoDescritivo(null);
		setArquivoNotas(null);
	}
	
	public EntidadeArquivo(int arquivoSala, Date arquivoDataArquivo, String arquivoDescritivo, String arquivoNotas) {
		this();
		setArquivoSala(arquivoSala);
		setArquivoDataArquivo(arquivoDataArquivo);
		setArquivoDescritivo(arquivoDescritivo);
		setArquivoNotas(arquivoNotas);
	}
	
	public int getIdobjarquivo() {
		return this.idobjarquivo;
	}

	public void setIdobjarquivo(int idobjarquivo) {
		this.idobjarquivo = idobjarquivo;
	}

	public int getArquivoSala() {
		return this.arquivoSala;
	}

	public void setArquivoSala(int arquivoSala) {
		this.arquivoSala = arquivoSala;
	}

	public String getArquivoDescritivo() {
		return this.arquivoDescritivo;
	}

	public void setArquivoDescritivo(String arquivoDescritivo) {
		this.arquivoDescritivo = arquivoDescritivo;
	}

	public Date getArquivoDataArquivo() {
		return this.arquivoDataArquivo;
	}

	public void setArquivoDataArquivo(Date arquivoDataArquivo) {
		this.arquivoDataArquivo = arquivoDataArquivo;
	}

	public String getArquivoNotas() {
		return this.arquivoNotas;
	}

	public void setArquivoNotas(String arquivoNotas) {
		this.arquivoNotas = arquivoNotas;
	}

	public List<EntidadeProcesso> getListaProcesso() {
		return this.listaProcesso;
	}

	public void setListaProcesso(List<EntidadeProcesso> listaProcesso) {
		this.listaProcesso = listaProcesso;
	}

	public EntidadeProcesso addEntidadeProcesso(EntidadeProcesso entidadeProcesso){
		getListaProcesso().add(entidadeProcesso);
		entidadeProcesso.setProcessoArquivo(this);
		return entidadeProcesso;
	}

	public EntidadeProcesso removeEntidadeProcesso(EntidadeProcesso entidadeProcesso){
		getListaProcesso().remove(entidadeProcesso);
		entidadeProcesso.setProcessoArquivo(null);
		return entidadeProcesso;
	}
}
